package com.guilin.system.service;

import com.guilin.common.core.domain.AjaxResult;
import com.guilin.domain.ForumReply;
import com.guilin.vo.ForumReplyVO;

import java.util.List;

/**
 * 论坛主题回复Service接口
 * 
 * @author xiaoqi
 * @date 2025-06-20
 */
public interface ForumReplyService
{
    /**
     * 查询论坛主题回复
     * 
     * @param id 论坛主题回复主键
     * @return 论坛主题回复
     */
    public ForumReply selectForumReplyById(Long id);


    /**
     * 查询论坛主题回复列表
     * 
     * @param forumReply 论坛主题回复
     * @return 论坛主题回复集合
     */
    public List<ForumReplyVO> selectForumReplyList(ForumReply forumReply);

    /**
     * 获取层级结构的回复列表
     * @param threadId
     * @return
     */
    List<ForumReplyVO> getHierarchicalReplies(Long threadId);

    /**
     * 添加子回复
     * @param reply
     * @return
     */
    int addChildReply(ForumReply reply);

    /**
     * 新增论坛主题回复
     * 
     * @param forumReply 论坛主题回复
     * @return 结果
     */
    public int insertForumReply(ForumReply forumReply);

    /**
     * 修改论坛主题回复
     * 
     * @param forumReply 论坛主题回复
     * @return 结果
     */
    public int updateForumReply(ForumReply forumReply);

    /**
     * 批量删除论坛主题回复
     * 
     * @param ids 需要删除的论坛主题回复主键集合
     * @return 结果
     */
    public int deleteForumReplyByIds(Long[] ids);

    /**
     * 删除论坛主题回复信息
     * 
     * @param id 论坛主题回复主键
     * @return 结果
     */
    public int deleteForumReplyById(Long id);


    /**
     * 验证当前用户是否是回复的所有者
     * @param reply
     * @param currentUserId
     * @return
     */
    boolean isOwner(ForumReply reply, Long currentUserId);
}
